package com.tgy.MyFlowable.workflow.service;

import org.flowable.task.api.Task;

import java.util.List;
import java.util.Map;

/**
 * 任务通用业务接口
 *
 * @version 1.0
 * @author: wang xiao xiang
 * @date: 2021/8/6 16:27
 */
public interface IFlwCommonService {
    /**
     * 获取任务
     *
     * @param taskId
     * @return
     */
    Task queryTask(String taskId);

    /**
     * 完成单个任务
     *
     * @param taskId
     */
    void complete(String taskId);

    /**
     * 完成单个任务(带参数)
     * @param taskId
     * @param variables
     */
    void complete(String taskId, Map<String, Object> variables);

    /**
     * 批量完成任务
     *
     * @param taskIdList
     */
    void complete(List<String> taskIdList);

    /**
     * 给任务添加意见
     *
     * @param taskId
     * @param comment
     */
    void addComment(String taskId, String comment);

    /**
     * 添加意见并完成任务
     *
     * @param taskId
     * @param assignee
     * @param comment
     */
    void addCommentAndCompleteTask(String taskId, String assignee, String comment);

    /**
     * 自动完成下一步任务，递归方法
     *
     * @param processInstanceId
     */
    void smartCompleteNext(String processInstanceId);

    /**
     * 设置下一步审批人
     *
     * @param processInstanceId
     * @param nextAssignee
     */
    void setNextAssignee(String processInstanceId, String nextAssignee);

    /**
     * 设置下一步任务期限
     *
     * @param processInstanceId
     * @param nextDueDate
     */
    void setNextDueDate(String processInstanceId, String nextDueDate);

    /**
     * 设置下一步任务优先级
     *
     * @param processInstanceId
     * @param nextPriority
     */
    void setNextPriority(String processInstanceId, Integer nextPriority);

    void deleteTaskAssignees(String taskId);
}
